home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / archivers / xfd / developer / sources / asm / addrheads.a < prev    next >
Text File  |  1999-06-14  |  11KB  |  325 lines

  1. * Programmheader
  2. *
  3. *    Name:        AddrHeads
  4. *    Author:        SDI
  5. *    Distribution:    PD
  6. *    Description:    XFD external for removing address crunch headers
  7. *    Compileropts:    -
  8. *    Linkeropts:    -
  9. *
  10. * 1.0   01.06.98 : first version
  11. * 1.1   04.06.98 : added ObjectMaster 1.0 data
  12. * 1.2   06.12.98 : added ObjectCreator1.0, uses cached SysBase
  13. * 2.0   14.12.98 : added PacMan 1.5, totally new shorter method
  14. * 2.1   15.12.98 : added TUC decruncher header
  15. * 2.2   21.12.98 : added unknown CopyMem header
  16.  
  17.         INCLUDE    "AINCLUDE:IncDirs.i"
  18.         INCLUDE    "lvo.i"
  19.  
  20.         INCLUDE    "libraries/xfdmaster.i"
  21.         INCLUDE "exec/memory.i"
  22.  
  23.         * head function for tests
  24. *        INCLUDE    "xfdExeHead.a"
  25.  
  26. ForeMan        MOVEQ    #-1,D0
  27.         RTS
  28.  
  29.         DC.L    XFDF_ID
  30.         DC.W    1,0
  31.         DC.L    0,0,Slave1
  32.  
  33.         DC.B    "$VER: AddrHeads 2.2 (21.12.1998) by SDI",0
  34. N_AddrHead    DC.B    'AddressHead',0
  35.         EVEN
  36.  
  37. Slave1        DC.L    0        ;no more slaves
  38.         DC.W    2        ;version
  39.         DC.W    36        ;master version
  40.         DC.L    N_AddrHead    ;name
  41.         DC.W    XFDPFF_ADDR    ;flags
  42.         DC.W    0
  43.         DC.L    RB_AddrHead    ;recog buffer
  44.         DC.L    DB_AddrHead        ;decrunch buffer
  45.         DC.L    0        ;recog segment
  46.         DC.L    0        ;decrunch segment
  47.         DC.W    0,0
  48.         DC.L    184        ;MinBufSize
  49.  
  50. *************************************************************************
  51. *            Recog and Decrunch data                *
  52. *************************************************************************
  53.  
  54. ADRH_RC        MACRO
  55.         DC.B    \1,\3,\5,\7,\9        * offsets
  56.         DC.B    \F            * 1 == BCPL
  57.         DC.L    \2,\4,\6,\8,\A        * data
  58.         DC.W    \B            * decroffset
  59.         DC.W    \C            * jumpoffset
  60.         DC.W    \D            * data offset
  61.         DC.W    \E            * size offset
  62.         ENDM
  63.  
  64. ADDRENTRIES    EQU    10
  65.  
  66. RecogTable    ADRH_RC    032,$48E780C0,042,$41FA002C,060,$538066FA,068,$D3C02320,076,$4CDF0301,038,082,088,048,1
  67.         ADRH_RC    108,$FFEC224F,132,$76FF2C7A,168,$600E4CDF,172,$430F4EB9,180,$9EFC001C,088,176,320,094,0
  68.         ADRH_RC    108,$00886164,132,$FFBE223A,172,$9EFC001C,176,$227AFFA6,180,$203AFFA8,088,168,304,094,0
  69.         ADRH_RC    048,$43FA001E,060,$0100203C,072,$FFFC4EF9,084,$207C0000,132,$13D100DF,158,162,168,154,0
  70.         ADRH_RC    036,$41FA0030,054,$D1C1D3C1,058,$91FC0000,072,$B3C06600,076,$FFEE4280,042,082,086,050,0
  71.         ADRH_RC    036,$43FA006E,060,$4EAEFF34,072,$00582280,152,$5061634D,156,$616E2021,050,110,164,056,0
  72.         ADRH_RC    036,$43FA004A,048,$7E00303C,060,$009A3D40,116,$5061634D,120,$616E2021,080,108,124,086,1
  73.         ADRH_RC    032,$48E7C0C2,048,$2C780004,060,$DEFC0014,072,$FFDE203A,076,$FFE04EAE,038,088,092,044,0
  74.         ADRH_RC 032,$2C780004,036,$207C0000,040,$0020227C,054,$4EAEFD90,056,$FD904EB9,044,060,064,050,0
  75.         ADRH_RC 032,$2C780004,036,$207C0000,040,$0024227C,054,$4EAEFD90,064,$70004E75,044,060,068,050,0
  76.  
  77. *************************************************************************
  78. *    Recog buffer function: receives buffer + length in A0/D0    *
  79. *************************************************************************
  80.  
  81. RB_AddrHead    MOVEM.L    D2/D3,-(A7)
  82.  
  83.         CMP.L    #$000003F3,(A0)
  84.         BNE.B    .No
  85.         MOVEQ    #1,D0
  86.         LEA    RecogTable(PC),A1
  87. .OuterLoop    MOVEQ    #4,D2
  88. .InnerLoop    MOVEQ    #0,D1
  89.         MOVE.B    (A1,D2.W),D1    * get offset
  90.         MOVE.L    (A0,D1.W),D1    * get data
  91.         MOVE.L    D2,D3
  92.         LSL.L    #2,D3
  93.         CMP.L    6(A1,D3.W),D1
  94.         DBNE.B    D2,.InnerLoop
  95.         TST.W    D2
  96.         BMI.B    .Exit        * we found it!
  97.         LEA    34(A1),A1    * next
  98.         ADDQ.L    #1,D0
  99.         MOVEQ    #ADDRENTRIES,D1
  100.         CMP.L    D1,D0
  101.         BLE.B    .OuterLoop
  102.  
  103. .No        MOVEQ    #0,D0
  104. .Exit        MOVEM.L    (A7)+,D2/D3
  105.         RTS
  106.  
  107.  
  108. *************************************************************************
  109. *    Decrunch buffer function: receives xfdbiBufferInfo in A0    *
  110. *************************************************************************
  111.  
  112. * D2 - destination size
  113. * A2 - destination start pointer
  114. * A3 - decrunch address
  115. * A4 - jump address
  116.  
  117. DB_AddrHead    MOVEM.L    D2/A3-A6,-(A7)
  118.         MOVE.L    A0,A5
  119.  
  120.         MOVEA.L    xfdbi_SourceBuffer(A5),A4
  121.         MOVE.L    A4,A0            * source
  122.         BSR.B    RB_AddrHead
  123.         MOVE.L    A1,A3            * data ptr
  124.         MOVE.L    xfdm_ExecBase(A6),A6
  125.         MOVE.W    32(A3),D0
  126.         MOVE.L    (A4,D0.W),D2
  127.         TST.B    5(A3)
  128.         BEQ.B    .skip
  129.         LSL.L    #2,D2            * is BCPL
  130. .skip        MOVE.L    D2,D0
  131.         MOVE.L    xfdbi_TargetBufMemType(A5),D1
  132.         JSR    _LVOAllocMem(A6)
  133.         MOVE.W    #XFDERR_NOMEMORY,xfdbi_Error(A5)
  134.         MOVE.L    D0,xfdbi_TargetBuffer(A5)
  135.         BEQ.B    .NoMem
  136.  
  137.         MOVE.L    D2,xfdbi_TargetBufLen(A5)
  138.         MOVE.L    D2,xfdbi_TargetBufSaveLen(A5)
  139.         MOVE.W    26(A3),D1        * decr
  140.         MOVE.L    (A4,D1.W),xfdbi_DecrAddress(A5)
  141.         MOVE.W    28(A3),D1        * jmp
  142.         MOVE.L    (A4,D1.W),xfdbi_JmpAddress(A5)
  143.  
  144.         MOVE.W    30(A3),D1        * data
  145.         LEA    (A4,D1.W),A0
  146.         MOVEA.L    D0,A1
  147.         MOVE.L    D2,D0
  148.         JSR    _LVOCopyMem(A6)
  149.  
  150.         CLR.W    xfdbi_Error(A5)
  151.         MOVEQ    #1,D0
  152. .NoMem        MOVEM.L    (A7)+,D2/A3-A6
  153.         RTS
  154.  
  155.  
  156. ****
  157. * 1 : xfdDecrunch simple header (V1.08)
  158. ****
  159. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 01,
  160. * 00, 00, 00, 00, 00, 00, 00, 00, HUNKSIZE______,
  161. * 00, 00, 03, E9, HUNKSIZE______, 48, E7, 80, C0,
  162. * 43, F9, DECRADDR______, 41, FA, 00, 2C, 20, 3C, 
  163. * BCPLSIZE______, B1, C9, 67, 14, 65, 08, 22, D8,
  164. * 53, 80, 66, FA, 60, 0A, D1, C0, D3, C0, 23, 20, 
  165. * 53, 80, 66, FA, 4C, DF, 03, 01, 4E, F9, JUMPADDR
  166. * ______, 00, 00
  167.  
  168. ****
  169. * 2 : xfdDecrunch professional header (V1.03)
  170. ****
  171. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 02,
  172. * 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 43, 
  173. * 00, 00, 00, 00, 00, 00, 03, E9, 00, 00, 00, 43,
  174. * 60, 16, 00, 00, 00, 00, AB, CD, 00, 00, 00, 00, 
  175. * 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
  176. * 48, E7, F0, C2, 43, FA, 00, AC, 70, 25, 2C, 78, 
  177. * 00, 04, 4E, AE, FD, D8, 41, FA, FF, D4, 20, 80,
  178. * 67, 7A, 43, F9, DECRADDR______, 20, 3C, DECRSIZE
  179. * ______, 4E, AE, FF, 34, 4A, 80, 66, 10, 2F, 3A,
  180. * FF, EC, 22, 4F, 41, FA, 00, 88, 61, 62, 58, 4F, 
  181. * 60, 4E, 22, 3A, FF, B0, 24, 3C, 00, 00, 01, 40,
  182. * 76, FF, 2C, 7A, FF, 9C, 4E, AE, FF, BE, 22, 3A,
  183. * FF, 9C, 24, 3A, FF, C4, 26, 3A, FF, C6, 4E, AE,
  184. * FF, D6, B6, 80, 67, 08, 41, FA, 00, 76, 61, 30, 
  185. * 60, 0E, 4C, DF, 43, 0F, 4E, B9, JUMPADDR______,
  186. * 9E, FC, 00, 1C, 22, 7A, FF, 9E, 20, 3A, FF, A0, 
  187. * 2C, 78, 00, 04, 4E, AE, FF, 2E, 22, 7A, FF, 5A,
  188. * 4E, AE, FE, 62, DE, FC, 00, 1C, 70, 00, 4E, 75, 
  189. * 48, E7, 20, 02, 22, 08, 24, 09, 2C, 7A, FF, 42,
  190. * 4E, AE, FC, 46, 4C, DF, 40, 04, 4E, 75, 64, 6F, 
  191. * 73, 2E, 6C, 69, 62, 72, 61, 72, 79, 00, 4E, 6F,
  192. * 20, 6D, 65, 6D, 6F, 72, 79, 20, 61, 76, 61, 69, 
  193. * 6C, 61, 62, 6C, 65, 20, 61, 74, 20, 24, 25, 30,
  194. * 38, 6C, 78, 2E, 0A, 00, 45, 72, 72, 6F, 72, 20, 
  195. * 6C, 6F, 61, 64, 69, 6E, 67, 20, 64, 61, 74, 61,
  196. * 2E, 0A, 00, 00, 00, 00, 03, F2, 00, 00, 03, F5, 
  197. * 00, 00, 00, 00, 00, 00, 03, F6, 
  198.  
  199. ****
  200. * 3: xfdDecrunch professional header (V1.08)
  201. ****
  202. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 02,
  203. * 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 3F,
  204. * 00, 00, 00, 00, 00, 00, 03, E9, 00, 00, 00, 3F,
  205. * 60, 16, 00, 00, 00, 00, AB, CD, 00, 00, 00, 00,
  206. * 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
  207. * 48, E7, F0, C2, 43, FA, 00, A6, 70, 21, 2C, 78,
  208. * 00, 04, 4E, AE, FD, D8, 41, FA, FF, D4, 20, 80,
  209. * 67, 76, 43, F9, DECRADDR______, 20, 3C, DECRSIZE 
  210. * ______, 4E, AE, FF, 34, 4A, 80, 66, 08, 41, FA,
  211. * 00, 88, 61, 64, 60, 4E, 22, 3A, FF, B8, 24, 3C, 
  212. * 00, 00, 01, 30, 76, FF, 2C, 7A, FF, A4, 4E, AE,
  213. * FF, BE, 22, 3A, FF, A4, 24, 3A, FF, CC, 26, 3A, 
  214. * FF, CE, 4E, AE, FF, D6, B6, 80, 67, 08, 41, FA,
  215. * 00, 6E, 61, 34, 60, 0E, 4C, DF, 43, 0F, 4E, B9,
  216. * JUMPADDR______, 9E, FC, 00, 1C, 22, 7A, FF, A6,
  217. * 20, 3A, FF, A8, 2C, 78, 00, 04, 4E, AE, FF, 2E,
  218. * 22, 7A, FF, 62, 2C, 78, 00, 04, 4E, AE, FE, 62,
  219. * DE, FC, 00, 1C, 70, 00, 4E, 75, 76, 00, 16, 18,
  220. * 24, 08, 2C, 7A, FF, 48, 4E, AE, FF, C4, 22, 00,
  221. * 4E, EE, FF, D0, 64, 6F, 73, 2E, 6C, 69, 62, 72,
  222. * 61, 72, 79, 00, 15, 4E, 6F, 20, 6D, 65, 6D, 6F,
  223. * 72, 79, 20, 61, 76, 61, 69, 6C, 61, 62, 6C, 65,
  224. * 2E, 0A, 14, 45, 72, 72, 6F, 72, 20, 6C, 6F, 61,
  225. * 64, 69, 6E, 67, 20, 64, 61, 74, 61, 2E, 0A, 00,
  226. * 00, 00, 03, F2, 00, 00, 03, F5, 00, 00, 00, 00,
  227. * 00, 00, 03, F6, 
  228.  
  229. ****
  230. * 4: ObjectMaster header (V1.0)
  231. ****
  232. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 02,
  233. * 00, 00, 00, 00, 00, 00, 00, 01, HUNKSIZE______,
  234. * 00, 00, 00, 01, 00, 00, 03, E9, HUNKSIZE______,
  235. * 41, FA, 00, 2A, 20, 08, 06, 80, 00, 00, 00, 58,
  236. * 43, FA, 00, 1E, 23, 40, 00, 06, 43, F9, 00, 00,
  237. * 01, 00, 20, 3C, 00, 00, 00, 20, 22, D8, 51, C8,
  238. * FF, FC, 4E, F9, 00, 00, 01, 00, 45, FA, 00, 48,
  239. * 20, 7C, 00, 00, 00, 00, D1, D2, 43, F9, 00, 07,
  240. * FF, FC, 20, 12, 13, 20, 13, D1, 00, DF, F1, 80,
  241. * 04, 80, 00, 00, 00, 01, 66, 00, FF, F0, D3, FC,
  242. * 00, 00, 00, 00, 20, 6A, 00, 04, 20, 12, 10, D9,
  243. * 13, D1, 00, DF, F1, 80, 04, 80, 00, 00, 00, 01,
  244. * 66, 00, FF, F0, 20, 6A, 00, 08, 4E, D0, DECRSIZE
  245. * ______, DECRADDR______, JUMPADDR______, 4E, 71,
  246.  
  247. ****
  248. * 5: ObjectCreator (V1.0)
  249. ****
  250. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 02,
  251. * 00, 00, 00, 00, 00, 00, 00, 01, HUNKSIZE______,
  252. * 00, 00, 00, 01, 00, 00, 03, E9, HUNKSIZE______,
  253. * 41, FA, 00, 30, 43, F9, DECRADDR______, 20, 09,
  254. * 22, 3C, DECRSIZE______, D1, C1, D3, C1, 91, FC,
  255. * 00, 00, 00, 01, 93, FC, 00, 00, 00, 01, 12, 90,
  256. * B3, C0, 66, 00, FF, EE, 42, 80, 4E, F9, JUMPADDR
  257. * ______,
  258.  
  259. ****
  260. * 6: PacMan Normal (V1.5)
  261. ****
  262. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 01,
  263. * 00, 00, 00, 00, 00, 00, 00, 00, HUNKSIZE______,
  264. * 00, 00, 03, E9, HUNKSIZE______, 48, E7, 80, 80,
  265. * 43, FA, 00, 6E, 22, 8E, 2C, 79, 00, 00, 00, 04,
  266. * 22, 7C, DECRADDR______, 20, 3C, DECRSIZE______,
  267. * 4E, AE, FF, 34, 4A, 80, 67, 00, 00, 46, 43, FA,
  268. * 00, 58, 22, 80, 41, FA, 00, 56, 26, 7C, DECRADDR
  269. * ______, 24, 3C, BCPLSIZE______, 26, D8, 51, CA,
  270. * FF, FC, 4C, DF, 01, 01, 43, FA, 00, 2C, 2C, 51,
  271. * 4E, B9, JMPADDR_______, 2C, 79, 00, 00, 00, 04,
  272. * 41, FA, 00, 26, 22, 50, 20, 3C, DECRSIZE______,
  273. * 4E, AE, FF, 2E, 4E, 75, DF, FC, 00, 00, 00, 08,
  274. * 4E, 75, 00, 00, 00, 00, 00, 00, 50, 61, 63, 4D,
  275. * 61, 6E, 20, 21, 00, 00, 00, 00,
  276.  
  277. ****
  278. * 7 : PacMan KillSys (V1.5)
  279. ****
  280. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 01,
  281. * 00, 00, 00, 00, 00, 00, 00, 00, HUNKSIZE______,
  282. * 00, 00, 03, E9, HUNKSIZE______, 48, E7, 80, 80,
  283. * 43, FA, 00, 4A, 22, 8E, 4D, F9, 00, DF, F0, 00,
  284. * 7E, 00, 30, 3C, 7F, FF, 3D, 40, 00, 96, 3D, 40,
  285. * 00, 9A, 3D, 40, 00, 9E, 13, FC, FF, 87, 00, BF,
  286. * D1, 00, 41, FA, 00, 30, 26, 7C, DECRADDR______,
  287. * 24, 3C, BCPLSIZE______, 26, D8, 51, CA, FF, FC,
  288. * 4C, DF, 01, 01, 43, FA, 00, 0A, 2C, 51, 4E, F9,
  289. * JMPADDR_______, 00, 00, 00, 00, 50, 61, 63, 4D,
  290. * 61, 6E, 20, 21,
  291.  
  292. ****
  293. * 8 : Addresshead of TUC-Decrunch slave (V1.1)
  294. ****
  295. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 01,
  296. * 00, 00, 00, 00, 00, 00, 00, 00, HUNKSIZE______,
  297. * 00, 00, 03, E9, HUNKSIZE______, 48, E7, C0, C2,
  298. * 43, F9, DECRADDR______, 20, 3C, DECRSIZE______,
  299. * 2C, 78, 00, 04, 4E, AE, FF, 34, 4A, 80, 66, 06,
  300. * DE, FC, 00, 14, 4E, 75, 41, FA, 00, 18, 22, 7A,
  301. * FF, DE, 20, 3A, FF, E0, 4E, AE, FD, 90, 4C, DF,
  302. * 43, 03, 4E, F9, JMPADDR_______,
  303.  
  304. ****
  305. * 9: ???
  306. ****
  307. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 01,
  308. * 00, 00, 00, 00, 00, 00, 00, 00, HUNKSIZE______,
  309. * 00, 00, 03, E9, HUNKSIZE______, 2C, 78, 00, 04,
  310. * 20, 7C, 00, 00, 00, 20, 22, 7C, DECRADDR______,
  311. * 20, 3C, DECRSIZE______, 4E, AE, FD, 90, 4E, B9,
  312. * JMPADDR_______,
  313.  
  314. ****
  315. * 10: ???
  316. ****
  317. * 00, 00, 03, F3, 00, 00, 00, 00, 00, 00, 00, 01,
  318. * 00, 00, 00, 00, 00, 00, 00, 00, HUNKSIZE______,
  319. * 00, 00, 03, E9, HUNKSIZE______, 2C, 78, 00, 04,
  320. * 20, 7C, 00, 00, 00, 24, 22, 7C, DECRADDR______,
  321. * 20, 3C, DECRSIZE______, 4E, AE, FD, 90, 4E, B9,
  322. * JMPADDR_______, 70, 00, 4E, 75
  323.  
  324.          END
  325.